import os
from openai import OpenAI
import json

# 法律领域分类
legal_fields = {
    "1": "合同法",
    "2": "劳动法", 
    "3": "知识产权法",
    "4": "公司法",
    "5": "民事纠纷"
}

# 常见法律文档类型
legal_documents = {
    "1": "劳动合同",
    "2": "租赁合同", 
    "3": "保密协议",
    "4": "授权委托书",
    "5": "律师函"
}

def provide_legal_advice(client, legal_field, situation_description):
    """提供初步法律咨询"""
    prompt = f"""
    作为法律顾问，请为以下情况提供初步法律建议：
    
    法律领域：{legal_field}
    情况描述：{situation_description}
    
    请提供：
    1. 相关法律原则和条款概述
    2. 当事人的可能权利和义务
    3. 建议采取的行动步骤
    4. 潜在风险和注意事项
    5. 建议咨询专业律师的时机
    
    注意：这不是正式法律意见，而是基于提供的信息给出的初步指导。
    始终建议用户咨询合格律师获取正式法律建议。
    """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位谨慎的法律顾问，提供基于法律知识的初步指导，总是强调需要咨询专业律师。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.6,
        max_tokens=1500
    )
    
    return response.choices[0].message.content

def generate_legal_document(client, doc_type, party_info, specific_terms):
    """生成法律文档模板"""
    prompt = f"""
    生成一份{doc_type}草案：
    
    参与方信息：{party_info}
    特别条款：{specific_terms}
    
    请提供：
    1. 完整的文档结构，包括标题、各方信息、定义条款
    2. 核心权利义务条款
    3. 违约责任和争议解决机制
    4. 签字和日期部分
    5. 使用说明和注意事项
    
    文档应该专业、全面，但明确标注为"模板草案"，需要律师审查。
    """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位经验丰富的法律文书起草专家，擅长创建各种法律文档模板。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.7,
        max_tokens=2000
    )
    
    return response.choices[0].message.content

def analyze_legal_clause(client, clause_text, context_info):
    """分析法律条款"""
    prompt = f"""
    分析以下法律条款：
    
    条款内容：{clause_text}
    上下文信息：{context_info}
    
    请提供：
    1. 条款的主要目的和效力
    2. 对各方的权利义务影响
    3. 潜在模糊性或风险点
    4. 建议的修改或澄清
    5. 相关判例或法律依据（如适用）
    
    分析应该专业、深入，但使用清晰易懂的语言。
    """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位资深的合同审查律师，擅长分析法律条款和识别潜在问题。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.6,
        max_tokens=1200
    )
    
    return response.choices[0].message.content

def explain_legal_concept(client, concept, audience_level):
    """解释法律概念"""
    prompt = f"""
    为{audience_level}解释以下法律概念：
    
    {concept}
    
    请提供：
    1. 简单明了的定义
    2. 实际例子和场景应用
    3. 相关法律原则和限制
    4. 常见误解和澄清
    5. 进一步学习的资源建议
    
    解释应该适合目标受众的理解水平，避免不必要的专业术语或进行解释。
    """
    
    response = client.chat.completions.create(
        model="deepseek-chat",
        messages=[
            {"role": "system", "content": "你是一位法律教育专家，擅长用通俗易懂的方式解释复杂的法律概念。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.7,
        max_tokens=1000
    )
    
    return response.choices[0].message.content

def legal_tech_assistant_app():
    """法律科技助手应用主函数"""
    client = OpenAI(api_key="你的API Key", base_url="https://api.deepseek.com")
    
    print("⚖️ AI法律科技助手")
    print("1. 法律咨询建议")
    print("2. 生成法律文档")
    print("3. 分析法律条款")
    print("4. 解释法律概念")
    
    choice = input("请选择功能: ")
    
    if choice == "1":
        print("法律领域选项:")
        for key, value in legal_fields.items():
            print(f"{key}. {value}")
        field_choice = input("选择法律领域: ")
        
        situation = input("请描述您的情况: ")
        
        advice = provide_legal_advice(
            client, legal_fields.get(field_choice, "一般法律问题"), situation
        )
        print(f"\n法律建议:\n{advice}")
        print("\n⚠️ 重要提醒: 这不是正式法律意见，请咨询合格律师获取专业建议!")
        
    elif choice == "2":
        print("文档类型选项:")
        for key, value in legal_documents.items():
            print(f"{key}. {value}")
        doc_choice = input("选择文档类型: ")
        
        parties = input("参与方信息(如:甲方-某某公司,乙方-个人姓名): ")
        terms = input("特别条款或要求: ")
        
        document = generate_legal_document(
            client, legal_documents.get(doc_choice, "一般合同"), parties, terms
        )
        print(f"\n法律文档草案:\n{document}")
        print("\n⚠️ 重要提醒: 这是模板草案，必须由律师审查后才能使用!")
        
    elif choice == "3":
        clause = input("请输入需要分析的法律条款: ")
        context = input("相关背景信息: ")
        
        analysis = analyze_legal_clause(client, clause, context)
        print(f"\n条款分析:\n{analysis}")
        
    elif choice == "4":
        concept = input("需要解释的法律概念: ")
        print("受众水平: 1.普通公众 2.法律学生 3.专业人士")
        level_choice = input("选择受众水平: ")
        levels = {
            "1": "普通公众",
            "2": "法律学生", 
            "3": "专业人士"
        }
        
        explanation = explain_legal_concept(
            client, concept, levels.get(level_choice, "普通公众")
        )
        print(f"\n概念解释:\n{explanation}")

if __name__ == "__main__":
    legal_tech_assistant_app()